/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：SwitchModel.js<br>
 * 日期：2017年1月3日<br>
 * 作者: 王中山<br>
 * 功能：动态元件模型<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.SwitchModel<br>
 * 类型功能：通用器件模型<br>
 */
Rainier.UI.V2.SwitchModel = Rainier.UI.V2.DeviceModel.extend({
    
    NAME : "Rainier.UI.V2.SwitchModel",
    
    /**
     * 函数名称：Rainier.UI.V2.SwitchModel.init<br>
     * 函数功能：构造函数<br>
     * 参数输入:property属性对象<br>
     * 异常信息：无<br>
     */
    init : function(property){
        var dummy = jQuery.extend(true,{},property);
        this._super(dummy?property:{});
        this.currentState = false;
    },
    
    /**
     * 函数名称：Rainier.UI.V2.SwitchModel.<br>
     * 函数功能：<br>
     * 参数输入：<br>
     * 参数输出：<br>
     * 函数返回：<br>
     * 异常信息：<br>
     */
    changeState : function(){
        
        var oldState = this.getCurrentState();
        var newState = !oldState;
        
        var event = Rainier.UI.V2.SwitchModel.SWITCH_MODEL_EVENT_CHANGE_STATE;
        
        this.firePropertyChange(event,oldState,newState,this);
        this.setCurrentState(newState);

        this.getProperty().modelProperty.currentState = newState;
        window.app.getContext().restartParse();
    },

    /**
     * 函数名称：Rainier.UI.V2.SwitchModel.<br>
     * 函数功能：<br>
     * 参数输入：<br>
     * 参数输出：<br>
     * 函数返回：<br>
     * 异常信息：<br>
     */
    getCurrentState : function(){
        return this.currentState;
    },
    
    /**
     * 函数名称：Rainier.UI.V2.SwitchModel.setCurrentState<br>
     * 函数功能：<br>
     * 参数输入：<br>
     * 参数输出：<br>
     * 函数返回：<br>
     * 异常信息：<br>
     */
    setCurrentState : function(state){
        this.currentState = state;
    },
    
    /**
    
     * 函数名称：Rainier.UI.V2.DeviceModel.tranlateToSpice<br>
     * 函数功能：将元件翻译成spice语句<br>
     * 参数输入：无<br>
     * 参数输出：无<br>
     * 函数返回：sSpice:string<br>
     * 异常信息：无<br>
     */
    tranlateToSpice : function(){
        var spice = this._super();
        if (spice.indexOf('@currentState@')) {
            var reg=new RegExp('@currentState@',"g"); 
            spice = spice.replace(reg,Number(this.currentState));
        }
        return spice;
    },
});

Rainier.UI.V2.SwitchModel.SWITCH_MODEL_EVENT_CHANGE_STATE = 'switch model event change state';